]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
ScreenShield: implement o.g.ScreenSaver.GetActiveTime
authorGiovanni Campagna <gcampagna@src.gnome.org>
Tue, 16 Oct 2012 14:38:32 +0000 (16:38 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 18 Oct 2012 13:30:40 +0000 (15:30 +0200)
Part of the old gnome-screensaver interface, returns the number of seconds
that the screensaver has been active for.

https://bugzilla.gnome.org/show_bug.cgi?id=686064

js/ui/screenShield.js
js/ui/shellDBus.js

index d5ca644fd0689960614cb84d7cc8615e74676d1c..07e450f8fcb0d27370937d7ea93bc92e1dff9a24 100644 (file)
@@ -429,6 +429,7 @@ const ScreenShield = new Lang.Class({
         this._isGreeter = false;
         this._isActive = false;
         this._inUnlockAnimation = false;
+        this._activationTime = 0;
 
         this._lightbox = new Lightbox.Lightbox(Main.uiGroup,
                                                { inhibitEvents: true,
@@ -556,8 +557,12 @@ const ScreenShield = new Lang.Class({
                 this._isModal = true;
             }
 
-            if (!this._isActive)
+            if (!this._isActive) {
                 this._lightbox.show();
+
+                if (this._activationTime == 0)
+                    this._activationTime = GLib.get_monotonic_time();
+            }
         } else {
             let lightboxWasShown = this._lightbox.shown;
             this._lightbox.hide();
@@ -774,6 +779,10 @@ const ScreenShield = new Lang.Class({
         return this._isActive;
     },
 
+    get activationTime() {
+        return this._activationTime;
+    },
+
     _tweenUnlocked: function() {
         this._inUnlockAnimation = true;
         this.unlock();
@@ -818,6 +827,7 @@ const ScreenShield = new Lang.Class({
         if (Main.sessionMode.currentMode == 'unlock-dialog')
             Main.sessionMode.popMode('unlock-dialog');
 
+        this._activationTime = 0;
         this._isActive = false;
         this.emit('lock-status-changed');
     },
@@ -828,6 +838,9 @@ const ScreenShield = new Lang.Class({
             this._isModal = true;
         }
 
+        if (this._activationTime == 0)
+            this._activationTime = GLib.get_monotonic_time();
+
         this.actor.show();
 
         if (Main.sessionMode.currentMode != 'unlock-dialog' &&
index 65465ef5b5a1e59f5bc0f3d292bab3370cde7b5d..7a625af3703c2d3d612087905870f0495a182a3c 100644 (file)
@@ -59,6 +59,9 @@ const ScreenSaverIface = <interface name="org.gnome.ScreenSaver">
 <method name="SetActive">
     <arg name="value" direction="in" type="b" />
 </method>
+<method name="GetActiveTime">
+    <arg name="value" direction="out" type="u" />
+</method>
 <signal name="ActiveChanged">
     <arg name="new_value" type="b" />
 </signal>
@@ -373,5 +376,13 @@ const ScreenSaverDBus = new Lang.Class({
 
     GetActive: function() {
         return this._screenShield.locked;
-    }
+    },
+
+    GetActiveTime: function() {
+        let started = this._screenShield.activationTime;
+        if (started > 0)
+            return Math.floor((GLib.get_monotonic_time() - started) / 1000000);
+        else
+            return 0;
+    },
 });